package cn.tannn.ops.ssh.entity;

import cn.tannn.ops.common.pojo.JpaCommonBean;
import cn.tannn.ops.util.SSHUtil;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

/**
 * 服务器ssh连接信息
 *
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @version V1.0
 * @date 2024/9/10 下午12:16
 */
@Entity
@Table(name = "ssh_info")
@Comment("服务器ssh连接信息")
@Getter
@Setter
@ToString
@RequiredArgsConstructor
@DynamicUpdate
@DynamicInsert
public class SshInfo extends JpaCommonBean<SshInfo> {

    /**
     * 服务器名
     */
    @Comment("服务器名")
    @Column(columnDefinition = "varchar(100) not null")
    String name;

    /**
     * 服务器密码 todo 后期考虑加密
     */
    @Comment("服务器密码")
    @Column(columnDefinition = "varchar(200) not null")
    String password;
    /**
     * 服务账号
     */
    @Comment("服务账号[默认root]")
    @Column(columnDefinition = "varchar(100) default 'root' ")
    String username;
    /**
     * ssh连接端口
     */
    @Comment("ssh连接端口[默认22]")
    @Column(columnDefinition = "int default 22")
    Integer port;
    /**
     * 服务器ip
     */
    @Comment("服务器ip[默认127.0.0.1]")
    @Column(columnDefinition = "varchar(50) default '127.0.0.1' ")
    String url;

    /**
     * 备注
     */
    @Comment("备注")
    @Column(columnDefinition = "varchar(200)")
    String remark;


//    String proxyId; // 后期的 通过代理登录

    /**
     * 获取连接
     * @return Session
     * @throws JSchException JSchException
     */
    public Session session() throws JSchException {
        return SSHUtil.connectionServer(username, password, url, port);
    }
}
